/**
 * file:   ActionInvocation.java
 * date:   2014年8月1日
 * author: weiwei
 * desc:   ActionInvocation 先调用相关的拦截器 （Action 调用之前的部分），最后调用 Action
 * 		        一旦 Action 调用返回结果，ActionInvocation 根据 struts.xml 配置文件，查找对应的转发路径,生成视图
 *         接着按照相反次序执行拦截器链 ( 执行 Action 调用之后的部分 )。最后响应通过滤器链返回
 */
package struts2.interceptor.simulation;

import java.util.ArrayList;
import java.util.List;

import thread.Test.interuptTest;

public class ActionInvocation {
	List<Inteceptor> interceptors = new ArrayList<Inteceptor>();
	int index = -1;
	loginAction lAction = new loginAction();

	public ActionInvocation() {
		this.interceptors.add(new firstInterceptor());
		this.interceptors.add(new secondInterceptor());
	}

	public void invoke() {

		System.out.println("ActionInvocation-> invoke()");
		index++;
		if (index >= this.interceptors.size()) {
			lAction.excute();
		} else {
			this.interceptors.get(index).intercept(this);
		}
	}

}
/*
ActionInvocation-> invoke()
111 starts...
ActionInvocation-> invoke()
222 starts...
ActionInvocation-> invoke()
loginAction excute!!
222 ends...
111 ends...

 * */
